/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package org.cip.esymons.general.bc;

import java.util.ArrayList;
import java.util.List;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;
import org.cip.esymons.general.be.Universidad;

/**
 *
 * @author ADMINISTRADOR
 */
@Stateless
public class UniversidadFacade implements UniversidadFacadeLocal {
    @PersistenceContext
    private EntityManager em;

    public void create(Universidad universidad) {
        em.persist(universidad);
    }

    public void edit(Universidad universidad) {
        em.merge(universidad);
    }

    public void remove(Universidad universidad) {
        Universidad aux = em.merge(universidad);
        em.remove(aux);
    }

    public Universidad find(Object id) {
        return em.find(Universidad.class, id);
    }

    public List<Universidad> findAll() {
        return em.createQuery("select object(o) from Universidad as o order by o.uniNombre").getResultList();
    }

    public Universidad buscaUniverasidad(Integer universidad) {
        return (Universidad) em.createQuery("select object(o) from Universidad as o where o.uniCodigo=?1").setParameter(1, universidad).getSingleResult();
    }

    public List<Universidad> listarUniversidadesPorCondicion(String cadena){

        try {
            StringBuilder sb = new StringBuilder();
            sb.append("Select u From Universidad u");
            Query q = em.createQuery(sb.toString());
            List<Universidad> lista = new ArrayList<Universidad>();
            for(Universidad univ : (List<Universidad>)q.getResultList()){
                if(univ.getUniNombre().indexOf(cadena.toUpperCase())>=0){
                    lista.add(univ);
                }
            }
            return lista;
        } catch (Exception e) {
            System.out.println("error : "+e.toString());
            return new ArrayList<Universidad>();
        }
    }

    public List<Universidad> listarUniversidadesSugesstion(String cadena) {
        try {
            List<Universidad> lista = new ArrayList<Universidad>();
            Query q = null;
            StringBuilder sb = new StringBuilder();
            sb.append(" select gen_universidad.* ");
            sb.append(" from gen_universidad ");
            sb.append(" where gen_universidad.uni_nombre like ?1");
            sb.append(" order by gen_universidad.uni_nombre");

            q = em.createNativeQuery(sb.toString(), Universidad.class);
            q.setParameter(1, "%" + cadena + "%");

            lista = q.getResultList();

            return lista;
        } catch (Exception ex) {
            return new ArrayList<Universidad>();
        }
    }
}
